

#include "HeaderFiles.h"


uint8_t gpio_level[3] = {0,0,0};

uint16_t hardware_version_table[7] = {HARDWARE_VESION_V200,
									  HARDWARE_VESION_V300,
									  0,0,0,0,0};

/*!
    \brief      
    \param[in]  none
    \param[out] none
    \retval     none
*/

void hardware_version_gpio_init(void)
{
	rcu_periph_clock_enable(RCU_GPIOG);
    rcu_periph_clock_enable(RCU_AF);
	
	// PG10 PG11 PG12 input pull low
	gpio_init(GPIOG, GPIO_MODE_IPD, GPIO_OSPEED_50MHZ, GPIO_PIN_10);
	gpio_init(GPIOG, GPIO_MODE_IPD, GPIO_OSPEED_50MHZ, GPIO_PIN_11);
	gpio_init(GPIOG, GPIO_MODE_IPD, GPIO_OSPEED_50MHZ, GPIO_PIN_12);

}


/*!
    \brief      
    \param[in]  none
    \param[out] none
    \retval     none
*/

uint16_t get_hardware_version_num(void)
{
	uint16_t version_num = 0;
	
	gpio_level[0] = gpio_input_bit_get(GPIOG,GPIO_PIN_10);
	gpio_level[1] = gpio_input_bit_get(GPIOG,GPIO_PIN_11);
	gpio_level[2] = gpio_input_bit_get(GPIOG,GPIO_PIN_12);
	
	version_num = gpio_level[0] + (gpio_level[1] << 1) + (gpio_level[2] << 2);	
	
	version_num = MATH_sat(version_num, 7, 0);
	
	version_num = hardware_version_table[version_num];
	
	return version_num;

}

